package com.dingding.special.order.appoint.dao;

import com.dingding.common.core.beans.UserTaxiOrdert;
import com.dingding.common.core.beans.special.UserspecialorderT;
import com.dingding.common.core.push.factory.dtos.OrderDurationDTO;
import com.dingding.common.core.push.factory.dtos.OrderDurationPara;
import com.dingding.special.user.driver.dto.onlinedriver.OLineDriverDto;

public interface IAppointDao {

	/**
	 * @Description:获取订单的里程信息
	 * @author fengshuonan
	 * @since 2.4
	 */
	public OrderDurationDTO getOrderDuration(OrderDurationPara orderDurationPara);
	
	/**
	 * @Description:获取订单的里程信息
	 * @param driver 在线司机的信息
	 * @param orderT 临时订单
	 * @author fengshuonan
	 * @since 2.4
	 */
	public OrderDurationDTO getOrderDuration(OLineDriverDto driver,UserspecialorderT orderT);
	
	/**
	 * @Description:修改订单的订单状态为指定的状态
	 * @param status //1:待指派  2:待上车(已指派)  3:已上车  4:待支付(已到达)  5:已完成  6:已取消
	 * @author fengshuonan
	 * @since 2.4
	 */
	public void changeOrderStatus(UserspecialorderT userspecialorderT,int status);
	
	/**
	 * @Description:指派订单后，把抢单司机加入到订单表中
	 * @author fengshuonan
	 * @since 2.4
	 */
	public void afterPushToDriver(String userSpecialOrderId,String driverId);

	/**
	 * @Description:获取订单
	 * @author fengshuonan
	 * @since 2.4
	 */
	public UserspecialorderT getUserSpecialOrderById(String specialOrderId);
	
	/**
	 * @Description:获取订单状态
	 * @author fengshuonan
	 * @return int //1:待指派  2:待上车(已指派)  3:已上车  4:待支付(已到达)  5:已完成  6:已取消 -1：错误状态
	 * @since 2.4
	 */
	public int getSpecialOrderStatus(String specialOrderId);
	
	/**
	 * @Description:判断司机是否正在接单
	 * @param driverId 司机id
	 * @author fengshuonan
	 * @return boolean true 司机正在接单  false 司机没有接单
	 * @since 2.4
	 */
	public boolean isDriverOrdering(String driverId);
	
	/**
	 * @Description:判断司机是否有预约单
	 * @param driverId 司机id
	 * @author fengshuonan
	 * @return boolean true 司机有预约单  false 司机没有预约单
	 * @since 2.4
	 */
	public boolean isDriverHaveUnRealOrder(String driverId);
	
	/**
	 * @Description 获取出租车订单的状态
	 * @param orderId 订单id
	 * @author fengshuonan
	 * @return int 1：待抢单   2：服务中    3：待支付     4：已完成      5：已取消
	 */
	public int getTaxiOrderStatus(String orderId);
	
	/**
	 * @Description 判断司机是否有进行中的出租车订单
	 * @author fengshuonan
	 * @return boolean true 有  false 没有
	 */
	public boolean isDriverHaveTaxiOrder(String userId);
	
	/**
	 * @Description 获取出租车的订单里程信息
	 * @param dto 在线司机的信息
	 * @param taxiOrdert 出租车订单
	 * @author fengshuonan
	 * @return OrderDurationDTO 订单里程信息
	 */
	public OrderDurationDTO getTaxiOrderDuration(OLineDriverDto dto,UserTaxiOrdert taxiOrdert);
}
